package com.cskaoyan.javase.oop2._1extends._4hierarchy;

/**
 * 继承层次
 * 在Java的继承层次中,Object是最顶层的祖先类,所有类如果没有直接一个父类,
 *      那它就直接继承Object(这是一个隐式继承,无需写出来)
 *
 * @since 10:06
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        // 思考: 这里创建"孙子类"对象,有几种方式?
        // 5种 包括Object
        Grandson gd = new Grandson();
        Son s = new Grandson();
        Father f = new Grandson();
        GrandFather gf = new Grandson();
        Object o = new Grandson();

        //不在同一条继承链中的类，没有任何关系。虽然看起来像"兄弟姐妹"类，但是Java是不讲究血统的。
        // Grandson2 gd2 = new Grandson();

    }
}

// Class 'GrandFather' explicitly extends 'java.lang.Object'
// Cyclic inheritance involving 'com.cskaoyan.javase.oop2._1extends._4hierarchy.GrandFather'
class GrandFather {
    int a;
}

class Father extends GrandFather {
    int b;
}

class Son extends Father {
    int c;
}

class Grandson extends Son {
    int d;
}

class Grandson2 extends Son {
    int d2;
}
